package LeetCode;

import java.util.ArrayList;
import java.util.List;

/**
 * @author VX5
 * @Title: MJC
 * @ProjectName interview
 * @Description: TODO
 * @date ${DAT}17:13
 */
public class LeetCode257 {

    public class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) { val = x; }
    }

    public List<String> binaryTreePaths(TreeNode root) {
//        List<String> res = new ArrayList<>();// 因为这个是每个方法私有的所以就不需要进行回溯
//        if (root == null){
//            return res;
//        }
//
//        if (root.left == null && root.right == null){//没有子节点
//            res.add(String.valueOf(root.val));
//            return res;
//        }
//
//        //左子树
//        List<String> lefts = binaryTreePaths(root.left);
//        for (String left : lefts) {
//            res.add(String.valueOf(root.val) + "->" + left);
//        }
//
//        //右子树
//        List<String> rights = binaryTreePaths(root.right);
//        for (String right : rights) {
//            res.add(String.valueOf(root.val) + "->" + right);
//        }
//        return res;
        List<String> res = new ArrayList<>();
        if (root == null){
            return res;
        }

        if (root.left == null && root.right == null){
            res.add(root.val+"");
        }

        List<String> left = binaryTreePaths(root.left);
        for (String s : left) {
            res.add(root.val+"->"+s);
        }

        List<String> right = binaryTreePaths(root.right);
        for (String s : right) {
            res.add(root.val+"->"+s);
        }
        return res;
    }
}
